/**
 * 统一的校验规则
 */
const regexConstants = {
  emoji: /(\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F])/,
  codeNum: /^[A-Za-z0-9]+$/, // 数字字母
  name: /^[A-Za-z0-9\u4e00-\u9fa5]+$/, // 只能输入中文英文数字
  devName: /^[A-Za-z0-9\u4e00-\u9fa5【】]+$/, // 只能输入中文英文数字【】
  email: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
  phone: /^1[3-9]\d{9}$/, // 手机
  // eslint-disable-next-line no-irregular-whitespace
  contactsPhone: /(^0\d{9,11}$)|(^1[3456789]\d{9}$)|(^4\d{9}$)|(^8\d{7,9}$)|(^9\d{4}$)/,  /* 校验0/1、4、8、9开头的电话号码 */
  custUniformCode: /^[A-Za-z0-9]\w{17}$/, // 社会信用代码
  REGEX_CHN_ENG_NUM_AND_UNDERLINE: /^[\u4E00-\u9FA5A-Za-z0-9_]+$/,
  REGEX_LETTERS_NUMBERS_UNDERLINE: /^\w+$/,
  notAllNumOrAlphabet: /^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[\W_])[a-zA-Z0-9\W_]+$/, /* 校验密码 */
  specialCharacters: /[~！@#￥%……&*!$^&_\\']/im, // 特殊字符
  character: /^[\u4E00-\u9FA5()（） ]+$/, // 中文 ()  编码不嫩给输入中文
  schemeName: /^\d{4}[年][《]\S{1,}[(（][第][\u4e00-\u9fa5\u767e\u5343\u96f61-9]{1,}[批][)）][》]$/
}
const validators = {
  validatorEmoji: (rule, value, callback) => {
    if (value && regexConstants.emoji.test(value)) { // 验证是否输入特殊的表情符
      callback(new Error(rule.message))
    } else {
      callback()
    }
  },
  validateEmail: (rule, value, callback) => {
    if (value && !regexConstants.email.test(value)) {
      callback(new Error('请输入合法的电子邮箱'))
    } else {
      callback()
    }
  },
  // 不匹配
  validate: (rule, value, callback) => {
    if (value && !rule.pattern.test(value)) {
      console.warn(rule)
      callback(new Error(rule.message))
    } else {
      callback()
    }
  },
  // 匹配
  newValidate: (rule, value, callback) => {
    if (value && rule.pattern.test(value)) {
      console.warn(rule)
      callback(new Error(rule.message))
    } else {
      callback()
    }
  },
  required: (rule, value, callback) => {
    if (value === '' || value === null || value === undefined) {
      console.warn(rule)
      callback(new Error(rule.message))
    } else {
      callback()
    }
  }
}
export { regexConstants, validators }
